Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从多重构造函数获取值_C#_Class_Constructor - Fatal编程技术网

C# 从多重构造函数获取值

C# 从多重构造函数获取值,c#,class,constructor,C#,Class,Constructor,以下是示例代码: class Class1 { string a; public Class1(string over) : base() { this.a = over; Console.WriteLine(a); } public Class1(bool check) { if(check) Console.WriteLine(a); } } class Program

以下是示例代码:

class Class1
{
    string a;

    public Class1(string over) : base()
    {
       this.a = over;
       Console.WriteLine(a);
    }

    public Class1(bool check)
    {
       if(check)
         Console.WriteLine(a);
    }
}

class Program
{
    static void Main(string[] args)
    {
        Class1 myClass1 = new Class1("test");
        Class1 myClass2 = new Class1(true);
        Console.ReadLine();
    }
}

我想做的是从第1个构造函数
Class1(string)
中获取字符串a的值,并将其显示给构造函数
Class1(bool)
。我如何才能做到这一点?

使
字符串成为一个
静态字符串。这样,Class1的所有实例都引用相同的字符串。

字符串设为静态。这样,Class1的所有实例都引用相同的字符串。

这应该是可行的,但我认为您不应该这样做

class Class1 {     

    static string a;  

    public Class1(string over) : base() {        
        a = over;        
        Console.WriteLine(a);     
    }      
    public Class1(bool check)     {        
        if(check)          
            Console.WriteLine(a);     
        } 
    }  

    class Program {     
        static void Main(string[] args)     {         
            Class1 myClass1 = new Class1("test");         
            Class1 myClass2 = new Class1(true);         
            Console.ReadLine();     
        } 
    } 
}

这应该行得通,但我认为你不应该这么做

class Class1 {     

    static string a;  

    public Class1(string over) : base() {        
        a = over;        
        Console.WriteLine(a);     
    }      
    public Class1(bool check)     {        
        if(check)          
            Console.WriteLine(a);     
        } 
    }  

    class Program {     
        static void Main(string[] args)     {         
            Class1 myClass1 = new Class1("test");         
            Class1 myClass2 = new Class1(true);         
            Console.ReadLine();     
        } 
    } 
}

在方法调用中(或在构造函数中)将myClass1传递给myClass2


很难说该做什么,因为1,a,结束,检查。它们对我来说毫无意义。

在方法调用中(或在构造函数中)将myClass1传递给myClass2


很难说该做什么,因为1,a,结束,检查。它们对我来说毫无意义。

您有两个不同的Class1实例:myClass1和MyClass2 如果需要跨实例共享“a”,则可以将其设置为静态


这样,在Class1的任何实例中设置“a”将应用于所有实例。

您有两个不同的Class1实例:myClass1和MyClass2 如果需要跨实例共享“a”,则可以将其设置为静态


这样,在Class1的任何实例中设置“a”将适用于所有实例。

将其显示到
Class1(bool)
控制台是什么意思。WriteLine(a)因为它只是给我一个空白的结果你为什么要这样做?这两个对象应该是独立的-为什么
newclass1(true)
要知道
测试“
字符串的存在?这里的问题有一些基本的问题,这意味着需要一种不同的设计。您将它显示到
Class1(bool)
Console.WriteLine(a)因为它只是给我一个空白的结果你为什么要这样做?这两个对象应该是独立的-为什么
newclass1(true)
要知道
测试“
字符串的存在?这里的问题有一些基本问题,这意味着需要不同的设计。它回答了OPs问题,但在我看来,这只是掩盖了一些裂缝——我认为这是一个明智的做法毫无意义——如果我想要多个具有不同字符串的
Class
对象,该怎么办?穿线呢?安全性(不涉及其他地方的字符串)?这不是对答案的批评——更多的是问题的错误,没有明确说明什么和为什么……它回答了OPs问题,但在我看来,这只是掩盖了一些漏洞——这对我来说是没有意义的,这是一件明智的事——如果我想要多个
具有不同字符串的对象怎么办?穿线呢?安全性(不涉及其他地方的字符串)?这并不是对答案的批评——更多的是问题的错误在于没有明确说明什么和为什么……您的代码无法编译,因为您忘记了在
if(check)
之后的大括号。应该是
if(check){
。我认为您不应该尝试从嵌套类调用Main!!您的代码不会编译,因为您忘记了
if(check)
之后的大括号。应该是
if(check){
。我认为您不应该尝试从嵌套类调用Main!!