如何在C#中访问类的成员,就像我认为我可以用c ++做的那样?

时间:2016-12-06 08:17:33

标签: c# c++

如何在C#中访问类的成员,就像我认为我可以用c ++一样?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

    namespace DateAndMoney
    {
        class InputNode
        {
            DateTime dateTime;
            string dollarAmount;
        }
        class Program
        {
            public static void ReadFile(string filename)
            {
                InputNode inputNode = new InputNode();
                if (System.IO.File.Exists(filename))
                {
                    var reader = new StreamReader(File.OpenRead(filename));

                    while (!reader.EndOfStream)
                    {
                        var input = reader.ReadLine();
                        var values = input.Split(',');
                        inputNode.dateTime = values[0];
                        inputNode.dollarAmount = values[1];

                    }
                }
            }

            static void Main(string[] args)
            {
                string filename;
                Console.WriteLine("enter path and file name of input file");
                filename = Console.ReadLine();
                ReadFile(filename);
            }
        }
    }

预编译器不喜欢:

            inputNode.dateTime = values[0];
            inputNode.dollarAmount = values[1];

此更改不会改变任何内容

struct InputNode
{
    DateTime dateTime;
    string dollarAmount;
}

6 个答案:

答案 0 :(得分:0)

您可以创建公共方法,该方法返回特定成员的值(推荐)或使成员自己公开。 您可以使用参考(https://msdn.microsoft.com/en-us/library/st6sy9xe.aspx

class InputNode
{
   private DateTime dateTime;
   private string dollarAmount;

   public DateTime GetDate()
   {
         return dateTime;
   }
}

答案 1 :(得分:0)

如果你改变了

class InputNode
{
   DateTime dateTime;
   string dollarAmount;
}

class InputNode
{
   public DateTime dateTime;
   public string dollarAmount;
}

然后,您可以在尝试时访问它们,但您需要将文本转换为日期以将其置于日期时间内。

答案 2 :(得分:0)

默认情况下,C#字段是私有的,因此您无法访问它。最好使用Properties来设置和获取值

在你的情况下:

class InputNode
    {
       public DateTime DateTime{get;set;}
       public string DollarAmount{get;set}
    }

答案 3 :(得分:0)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace DateAndMoney
{
    public class InputNode
    {
        public DateTime dateTime;
        public string dollarAmount;
    }
    public class Program
    {
        public static void ReadFile(string filename)
        {
            InputNode inputNode = new InputNode();
            if (System.IO.File.Exists(filename))
            {
                var reader = new StreamReader(File.OpenRead(filename));

                while (!reader.EndOfStream)
                {
                    var input = reader.ReadLine();
                    var values = input.Split(',');
                    try
                    {
                        inputNode.dateTime = Convert.ToDateTime(values[0]);
                        inputNode.dollarAmount = Convert.ToDouble(values[1]);
                    }
                    catch(Exception e)
                    {}
                }
            }
        }

        public static void Main(string[] args)
        {
            string filename;
            Console.WriteLine("enter path and file name of input file");
            filename = Console.ReadLine();
            ReadFile(filename);
        }
    }
}

答案 4 :(得分:0)

这样做了。

 class InputNode
    {
        public DateTime dateTime;
        public string dollarAmount;
    }
    class Program
    {
        public static void ReadFile(string filename)
        {
            InputNode inputNode = new InputNode();
            if (System.IO.File.Exists(filename))
            {
                var reader = new StreamReader(File.OpenRead(filename));

                while (!reader.EndOfStream)
                {
                    var input = reader.ReadLine();
                    var values = input.Split(',');
                    inputNode.dateTime = Convert.ToDateTime(values[0]);
                    inputNode.dollarAmount = values[1];

                }
            }
        }

答案 5 :(得分:0)

首先(正如其他人所说),您需要为应用程序的其余部分使字段“可见”。

class InputNode
{
    // DateTime dateTime;
    internal DateTime dateTime;
    public string dollarAmount;
    // string dollarAmount;
}

您可以阅读有关access modifiers here

的更多信息

第二件事是您将string分配给DateTime类型字段。在C#中,你有很多转换器可以从一种类型转换为另一种类型,你也可以使用this example

创建自己的转换器