求教一个  函数返回值  的问题。
假设有如下代码
C# code
namespace test
{
    class Class1
    {
        public Class2 Result()
        {
            //return new Class2();
            //这里不能这样返回值。
        }
    }
    class Class2
    {
        private Class2()
        {
            //some code
        }
    }
}
  我要Class2不能有可使用的构造函数,但又要在Class1类里面返回一个Class2类型的值,这时这个返回语句怎么写?
或者有其他的什么解决方法没?
------解决方案-------------------- class Class2
{
 private Class2()
  {
  }
 public static Class2 getClass2()
 {
     Class2 cc = new Class2();
     return cc;
 }
}
这个是最基本的设计模式
------解决方案-------------------- 静态方法返回
------解决方案-------------------- 多想了一会事就慢了。。
------解决方案-------------------- 使用单例模式
------解决方案-------------------- 1楼正解。
既然无可用构造,类本身有默认构造 可以实例化,且必须为静态。
------解决方案-------------------- 把构造函数私有化,呵呵
------解决方案-------------------- 楼主这样做的目的是什么?
------解决方案-------------------- 1楼的不就是吗?
------解决方案-------------------- 探讨  我这样做有我自己的目的。 
------解决方案-------------------- 我要Class2不能有可使用的构造函数,但又要在Class1类里面返回一个Class2类型的值
If Class1 can create Class2, what prevents Class7 or Class8 or Class9 from creating Class2?
------解决方案-------------------- MatchCollection本身不能创建一个新的实例,但是可以用re.Matches创建一个新的实例。
=======================================================================
那是因为re.Matches(str)返回一个MatchCollection,MatchCollection mc = re.Matches(str);//把一个句柄交给引用变量mc。
------解决方案-------------------- 要么 用internal修饰符,详细请查阅MSDN;
要么 变态一点吧:
C# code
    public class W
    {
        public N GetN()
        {
            return N.CreateN(this);
        }
    }
    public class N
    {
        private N() { ;}
        public static N CreateN(object Creater)
        {
            if (Creater as W != null)
            {
                return new N();
            }
            else
                return null;
        }
    }
------解决方案--------------------  只要返回的类型对就行了!!!
------解决方案--------------------  探讨  1楼的是可以运行。但不是我想要的意思。大家也都没有弄懂我的意思。  我是说Class2是不能被自己创建一个新的实例的。只有在Class1里用Result()才能返回一个新的实例。  就像这个例子  C# code Class2 c2; //c2=new Class2; //这里是不允许的。 Class1 c1 = new Class1(); c2 = c1.Result(); 也许这个是挺麻烦的。 
------解决方案--------------------  internal
------解决方案--------------------  class2的构造函数可以写成internal。 这样可以在class1中访问(因为同处一个程序集里) 但是在其它的程序集里(比如项目引用后)是不能使用这个构造函数的。
------解决方案-------------------- C# code
class Class2
    {
        private Class2()
        { }
        class Class1
        {
            Class2 result()
            {
                return new Class2();
            }
        }
    }