小编Kar*_*AMR的帖子

更清洁的方法在C#中进行空检查?

假设,我有这个界面,

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# null .net-4.0 .net-4.5

180
推荐指数
9
解决办法
8万
查看次数

2个C#类作为成员互相包含

我有两个c#类A,B.

代码是这样的

Class A
{
     B object1;
     bool x;
}

Class B       
{     
    A object2;        
    bool y;
}
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?如果这是什么意思?A具有B的对象,其具有A的对象....它可以继续...

.net c# oop class c#-3.0

7
推荐指数
1
解决办法
1416
查看次数

如何使用"查找方法"检查C#列表中是否存在条目

我通过以下方式使用带有Find方法的C#List:

Tag searchResult = tags.Find(x => x.TagId.Equals(tag));
Run Code Online (Sandbox Code Playgroud)

该列表包含"struct Tag",现在我的问题是如何检查列表中是否存在标记条目.

MSDN方面,我发现了以下内容:

  • 如果找不到任何内容,则返回"类型T的默认值".

所以我尝试了以下方法:

if(default(Tag) == searchResult ){}
Run Code Online (Sandbox Code Playgroud)

但由于错误:"运算符'=='无法应用于类型的操作数",这不起作用

我错了什么?

c# linq list

4
推荐指数
1
解决办法
127
查看次数

替换特定位置的字符

我的输入是一个表示机器执行时间和日期的字符串.问题是这个字符串的格式很糟糕,因此我无法DateTime.Parse将其转换为DateTime对象.

输入示例:

2014-01-07-15.26.46.000452

我需要将它转换为我可以使用的东西(用空格替换最后的' - ',用'​​:'替换前2'.'),如下所示:

2014-01-07 15:26:46.0​​00452

我想我应该使用正则表达式来解决这个问题因为我需要替换特定位置的字符,所以myString.Replace不会有任何好处.不幸的是,我使用正则表达式的知识几乎没有,我找不到任何与我的问题相符的例子.

任何人都可以帮我解决这个问题吗?(另外,我想解释这个正则表达式的工作方式和原因)

c# regex string

0
推荐指数
1
解决办法
48
查看次数

最好的重载方法是string.split匹配(一些参数[])具有无效参数

我在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)

.net c# string split character

-1
推荐指数
1
解决办法
656
查看次数

标签 统计

c# ×5

.net ×2

string ×2

.net-4.0 ×1

.net-4.5 ×1

c#-3.0 ×1

character ×1

class ×1

linq ×1

list ×1

null ×1

oop ×1

regex ×1

split ×1