C#控制台中的访问值

C#控制台中的访问值,c#,console,C#,Console,我想访问main中读取和写入的值。 这可能吗?我用它作为一个对象,但我知道对象会自动清除 class Program { string read= String.Empty; string write= String.Empty; static void Main(string[] args) { Anymethod(); Console.WriteLine(**

我想访问main中读取和写入的值。 这可能吗?我用它作为一个对象,但我知道对象会自动清除

    class Program
    {  
        string read= String.Empty;
        string write= String.Empty;
        static void Main(string[] args)
        {

            Anymethod();
            Console.WriteLine(**read +write** ); **// **error I want to access the values of read and write from anymethod****
        }


         public static string Anymethod()
         {
                Program P = new Program();
                Program P1 = new Program();
                p.read = "ASD"
                p1.write="asdas";
         }
    }

我想你想要实现这样的东西

public class Program
{

    static string read = string.Empty;
    static string write = string.Empty;

    static void Main(string[] args)
    {
        read = asad;
        write = ASAD;
        Console.WriteLine(read + write); 
    }
}
替代方法

试试这个

public class Program
{

    public string read = string.Empty;
    public string write = string.Empty;

    static void Main(string[] args)
    {
        Console.WriteLine(AnyMethod().read + AnyMethod().write); 
    }

    public static Program AnyMethod()
    {
        Program p = new Program();
        p.read = "Asad";
        p.write = "ASAD";
        return p;
    }
}

我想你想要实现这样的东西

public class Program
{

    static string read = string.Empty;
    static string write = string.Empty;

    static void Main(string[] args)
    {
        read = asad;
        write = ASAD;
        Console.WriteLine(read + write); 
    }
}
替代方法

试试这个

public class Program
{

    public string read = string.Empty;
    public string write = string.Empty;

    static void Main(string[] args)
    {
        Console.WriteLine(AnyMethod().read + AnyMethod().write); 
    }

    public static Program AnyMethod()
    {
        Program p = new Program();
        p.read = "Asad";
        p.write = "ASAD";
        return p;
    }
}

您无法访问th
p.Read
p.Write
,因为它们仅在方法
Anymethod()中可见
因此,您有两种可能:作为静态的delcare
Read
Write

static string read=string.Empty;
static sring write=string.Empty;
您可以访问以下字段:

Program.read
Program.write
 static void Main(string[] args)
    {
        Program P,P1;
        Anymethod(ref P,ref P1);
        console.writeline(P.Read,P1.Write ); **// **error I want to access the values of read and write from anymethod****
    }
2) 可以将p和P1作为ref参数传递

public static string Anymethod(ref Program P, ref Program P1)
     {
            P = new Program();
            P1 = new Program();
            p.read = "ASD"
            p1.write="asdas";
     }
大体上,您可以这样做:

Program.read
Program.write
 static void Main(string[] args)
    {
        Program P,P1;
        Anymethod(ref P,ref P1);
        console.writeline(P.Read,P1.Write ); **// **error I want to access the values of read and write from anymethod****
    }

您无法访问th
p.Read
p.Write
,因为它们仅在方法
Anymethod()中可见
因此,您有两种可能:作为静态的delcare
Read
Write

static string read=string.Empty;
static sring write=string.Empty;
您可以访问以下字段:

Program.read
Program.write
 static void Main(string[] args)
    {
        Program P,P1;
        Anymethod(ref P,ref P1);
        console.writeline(P.Read,P1.Write ); **// **error I want to access the values of read and write from anymethod****
    }
2) 可以将p和P1作为ref参数传递

public static string Anymethod(ref Program P, ref Program P1)
     {
            P = new Program();
            P1 = new Program();
            p.read = "ASD"
            p1.write="asdas";
     }
大体上,您可以这样做:

Program.read
Program.write
 static void Main(string[] args)
    {
        Program P,P1;
        Anymethod(ref P,ref P1);
        console.writeline(P.Read,P1.Write ); **// **error I want to access the values of read and write from anymethod****
    }

让我首先解释什么是“静态”成员

“static”关键字可以使一个、类、方法、变量成为静态的。这意味着可以访问每个静态值,而无需创建类的实例。现在让我谈谈你的代码

    string read=string.empty;
    string write=string.empty;
首先声明了两个非静态值,这意味着您可以在创建“Program”类的实例时设置或获取这些值

在这里,您创建了两个新的Program类实例,这没有什么问题,但是您看到您正在做什么了吗?在p的实例中,您将read变量(一个实例值)设置为值“ASD”,这意味着只有在类“p”的实例中,值“read”才具有值“ASD”。实例“p”中的write值仍然为空,因为您没有设置它

现在您还创建了一个P1实例,这里您将“实例值write”设置为“asdas”,这意味着只有对于实例P1,write成员才具有值“asdas”,而read成员保持为空,因为它是一个新实例

让我们看看您迄今为止所做的全部工作:

实例p现在看起来如下所示:

Program.read
Program.write
 static void Main(string[] args)
    {
        Program P,P1;
        Anymethod(ref P,ref P1);
        console.writeline(P.Read,P1.Write ); **// **error I want to access the values of read and write from anymethod****
    }
p、 read=“ASD” p、 write=“”

P1的实例现在如下所示:

Program.read
Program.write
 static void Main(string[] args)
    {
        Program P,P1;
        Anymethod(ref P,ref P1);
        console.writeline(P.Read,P1.Write ); **// **error I want to access the values of read and write from anymethod****
    }
p1.read=“” p1.write=“asdas”

现在,在main方法中,您试图访问在两个不同实例中设置的这两个值,这是没有意义的。如果您运行下面的代码,您可能会理解我在完整解释中要说的内容

请理解,您的问题的解决方案在此代码下。这只是我试图在上面解释的一个例子。

class Program
{

    private static Program P;
    private static Program P1;

    string read = string.Empty;
    string write = string.Empty;

    static void Main(string[] args)
    {

        Anymethod();

        Console.WriteLine("==================P instance value=================");

        Console.WriteLine("Value read of instance 'P'  P.read ='{0}'", P.read);
        Console.WriteLine("Value write of Instance 'P' P.write='{0}'", P.write);

        //Same as the above code, only not using a String format
       // Console.WriteLine("Value read of instance 'P'  P.read ='" + P.read + "'");
       // Console.WriteLine("Value write of Instance 'P' P.write='" + P.write + "'");

        Console.WriteLine("==================P1 instance value===================");
        Console.WriteLine("Value read of instance 'P1'  P1.read ='{0}'", P1.read);
        Console.WriteLine("Value write of Instance 'P1' P1.write='{0}'", P1.write);

        //Same as the above code, only not using a String format
        // Console.WriteLine("Value read of instance 'P1'  P.read ='" + P1.read + "'");
        // Console.WriteLine("Value write of Instance 'P1' P.write='" + P1.write + "'");

        Console.WriteLine("==============Together=================");
        Console.WriteLine(P.read + P1.write);



        Console.ReadLine();

    }


    public static void Anymethod()
    {
        P = new Program();
        P1 = new Program();
        P.read = "Hello ";
        P1.write = " World";
    }
}
最后,在一堆文本之后,我将发布一个解决方案

解决方案:

class Program
{
    public static string read = String.Empty; // Static, what does mean that every one can access it without making a instance
    public static string write = String.Empty; // Static, what does mean that every one can access it without making a instance

    static void Main(string[] args)
    {

        Anymethod();
        Console.WriteLine(read + write);
        Console.ReadLine();
    }


    public static void Anymethod()
    {
        Program.read = "Hello "; // Access the public static variable read in the ProgramClass
        Program.write = "World"; // Access the public static variable write in the Program Class
    }

}

让我首先解释什么是“静态”成员

“static”关键字可以使一个、类、方法、变量成为静态的。这意味着可以访问每个静态值,而无需创建类的实例。现在让我谈谈你的代码

    string read=string.empty;
    string write=string.empty;
首先声明了两个非静态值,这意味着您可以在创建“Program”类的实例时设置或获取这些值

在这里,您创建了两个新的Program类实例,这没有什么问题,但是您看到您正在做什么了吗?在p的实例中,您将read变量(一个实例值)设置为值“ASD”,这意味着只有在类“p”的实例中,值“read”才具有值“ASD”。实例“p”中的write值仍然为空,因为您没有设置它

现在您还创建了一个P1实例,这里您将“实例值write”设置为“asdas”,这意味着只有对于实例P1,write成员才具有值“asdas”,而read成员保持为空,因为它是一个新实例

让我们看看您迄今为止所做的全部工作:

实例p现在看起来如下所示:

Program.read
Program.write
 static void Main(string[] args)
    {
        Program P,P1;
        Anymethod(ref P,ref P1);
        console.writeline(P.Read,P1.Write ); **// **error I want to access the values of read and write from anymethod****
    }
p、 read=“ASD” p、 write=“”

P1的实例现在如下所示:

Program.read
Program.write
 static void Main(string[] args)
    {
        Program P,P1;
        Anymethod(ref P,ref P1);
        console.writeline(P.Read,P1.Write ); **// **error I want to access the values of read and write from anymethod****
    }
p1.read=“” p1.write=“asdas”

现在,在main方法中,您试图访问在两个不同实例中设置的这两个值,这是没有意义的。如果您运行下面的代码,您可能会理解我在完整解释中要说的内容

请理解,您的问题的解决方案在此代码下。这只是我试图在上面解释的一个例子。

class Program
{

    private static Program P;
    private static Program P1;

    string read = string.Empty;
    string write = string.Empty;

    static void Main(string[] args)
    {

        Anymethod();

        Console.WriteLine("==================P instance value=================");

        Console.WriteLine("Value read of instance 'P'  P.read ='{0}'", P.read);
        Console.WriteLine("Value write of Instance 'P' P.write='{0}'", P.write);

        //Same as the above code, only not using a String format
       // Console.WriteLine("Value read of instance 'P'  P.read ='" + P.read + "'");
       // Console.WriteLine("Value write of Instance 'P' P.write='" + P.write + "'");

        Console.WriteLine("==================P1 instance value===================");
        Console.WriteLine("Value read of instance 'P1'  P1.read ='{0}'", P1.read);
        Console.WriteLine("Value write of Instance 'P1' P1.write='{0}'", P1.write);

        //Same as the above code, only not using a String format
        // Console.WriteLine("Value read of instance 'P1'  P.read ='" + P1.read + "'");
        // Console.WriteLine("Value write of Instance 'P1' P.write='" + P1.write + "'");

        Console.WriteLine("==============Together=================");
        Console.WriteLine(P.read + P1.write);



        Console.ReadLine();

    }


    public static void Anymethod()
    {
        P = new Program();
        P1 = new Program();
        P.read = "Hello ";
        P1.write = " World";
    }
}
最后,在一堆文本之后,我将发布一个解决方案

解决方案:

class Program
{
    public static string read = String.Empty; // Static, what does mean that every one can access it without making a instance
    public static string write = String.Empty; // Static, what does mean that every one can access it without making a instance

    static void Main(string[] args)
    {

        Anymethod();
        Console.WriteLine(read + write);
        Console.ReadLine();
    }


    public static void Anymethod()
    {
        Program.read = "Hello "; // Access the public static variable read in the ProgramClass
        Program.write = "World"; // Access the public static variable write in the Program Class
    }

}