求教一个 函数返回值 的有关问题
求教一个函数返回值的问题。假设有如下代码C# codenamespace test{class Class1{public Class2 Result(){//
求教一个 函数返回值 的问题。 假设有如下代码
C# codenamespace 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# codeclass Class2 { private Class2() { } class Class1 { Class2 result() { return new Class2(); } } } [解决办法] 按你的要求只能使用nest class 了,但是这样一来你访问Class1 就比较麻烦了
C# code class Class2 { private Class2() { Console.WriteLine("Class 2 is created"); } internal class Class1 { internal Class2 result() { return new Class2(); } } }[解决办法] C# codeclass calss1{ public class2 ReturnClass2() { return class2.NewClass2(); }}class class2{ private class2() {} public static class2 NewClass2() { return new class2 }}[解决办法] 楼上不是他要的!