如何在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;
}
答案 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