假设,我有这个界面,
interface IContact
{
IAddress address { get; set; }
}
interface IAddress
{
string city { get; set; }
}
class Person : IPerson
{
public IContact contact { get; set; }
}
class test
{
private test()
{
var person = new Person();
if (person.contact.address.city != null)
{
//this will never work if contact is itself null?
}
}
}
Run Code Online (Sandbox Code Playgroud)
Person.Contact.Address.City != null (这可以检查City是否为空.)
但是,如果Address或Contact或Person本身为null,则此检查将失败.
目前,我能想到的一个解决方案是:
if (Person != null && Person.Contact!=null && Person.Contact.Address!= null && Person.Contact.Address.City != …Run Code Online (Sandbox Code Playgroud) 我有两个c#类A,B.
代码是这样的
Class A
{
B object1;
bool x;
}
Class B
{
A object2;
bool y;
}
Run Code Online (Sandbox Code Playgroud)
这甚至可能吗?如果这是什么意思?A具有B的对象,其具有A的对象....它可以继续...
我通过以下方式使用带有Find方法的C#List:
Tag searchResult = tags.Find(x => x.TagId.Equals(tag));
Run Code Online (Sandbox Code Playgroud)
该列表包含"struct Tag",现在我的问题是如何检查列表中是否存在标记条目.
在MSDN方面,我发现了以下内容:
所以我尝试了以下方法:
if(default(Tag) == searchResult ){}
Run Code Online (Sandbox Code Playgroud)
但由于错误:"运算符'=='无法应用于类型的操作数",这不起作用
我错了什么?
我的输入是一个表示机器执行时间和日期的字符串.问题是这个字符串的格式很糟糕,因此我无法DateTime.Parse将其转换为DateTime对象.
输入示例:
2014-01-07-15.26.46.000452
我需要将它转换为我可以使用的东西(用空格替换最后的' - ',用':'替换前2'.'),如下所示:
2014-01-07 15:26:46.000452
我想我应该使用正则表达式来解决这个问题因为我需要替换特定位置的字符,所以myString.Replace不会有任何好处.不幸的是,我使用正则表达式的知识几乎没有,我找不到任何与我的问题相符的例子.
任何人都可以帮我解决这个问题吗?(另外,我想解释这个正则表达式的工作方式和原因)
我在mMSH.Split("|")(6)收到错误.ToUpper; 和mMSA_ACK.Split("|")[2] .ToUpper(); 和CheckNullString(mMSA_ACK.Split("|")[1])说最好的重载方法匹配string.split(某些参数[])具有无效参数.请帮帮我,下面是我的代码.
private int FindMSH(string strMessage_ACK, string mMsh_Send) {
try {
//MsgBox("FindMSH")
writeMessage("Inside FindMSH function");
//-> get current MSH segment
string[] mSplittxt = strMessage_ACK
.Replace(System.Convert.ToChar(11).ToString(),"")
.Replace(System.Convert.ToChar(28).ToString(), "")
.Split(System.Convert.ToChar(13));
string mMSH_ACK = mSplittxt
.Where(x => x.ToString().StartsWith("MSH|"))
.Select(x => x).FirstOrDefault().ToString();
string mMSA_ACK = mSplittxt
.Where(x => x.ToString().StartsWith("MSA|"))
.Select(x => x).FirstOrDefault().ToString();
//1.ackcode(1) = "AA" in MSA segment
string sendMSH_msgid = mMSH.Split("|")(6).ToUpper;
string mAck = string.Empty;
string recACK_msgid = string.Empty;
if (mMSA_ACK.Length > 0)
{
recACK_msgid = mMSA_ACK.Split("|")[2].ToUpper();
mAck = CheckNullString(mMSA_ACK.Split("|")[1]);
}
Run Code Online (Sandbox Code Playgroud)