小编Hao*_*Lim的帖子

财产的命名惯例

哪一个更好或更清楚?

public int FrozenRegionWidth { get; set; }
Run Code Online (Sandbox Code Playgroud)

要么...

public int WidthOfFrozenRegion { get; set; }
Run Code Online (Sandbox Code Playgroud)

c# coding-style naming-conventions

3
推荐指数
1
解决办法
4208
查看次数

继承还是条件?

我听说有人说好的设计涉及使用继承,而不是使用if块乱丢你的代码.在什么情况下我们应该使用继承,什么时候条件阻塞就好了?

language-agnostic oop

3
推荐指数
1
解决办法
844
查看次数

如何在C#中扩展URL?

如果我有http://popurls.com/go/msn.com/l4eba1e6a0ffbd9fc915948434423a7d5这样的网址,如何以编程方式将其扩展回原始网址?显然我可以使用像expandurl.com这样的API,但这会限制我每小时100个请求.

c# http httpwebrequest

3
推荐指数
1
解决办法
642
查看次数

在具有结构的STL向量上使用唯一的

在编程任务中,我试图确保特定向量仅包含唯一项.对于原始类型,操作非常简单:

vector<int> lala;
lala.push_back(1);
lala.push_back(99);
lala.push_back(3);
lala.push_back(99);

sort(lala.begin(), lala.end()); // lala: 1, 3, 99, 99
lala.erase(unique(lala.begin(), lala.end()), lala.end()); // lala: 1, 3, 99
Run Code Online (Sandbox Code Playgroud)

但是,问题是我没有使用int.但:

typedef struct
{
    int x;
    int y;
    int maxX;
    int maxY;
    int width;
    int height;
    int id;
} Rect;

bool SameRect(Rect first, Rect second)
{
    return first.x      == second.x &&
           first.y      == second.y &&
           first.width  == second.width &&
           first.height == second.height &&
           first.maxX   == second.maxX &&
           first.maxY   == second.maxY;
}

//...
vector<Rect> lala;
//...
sort(lala.begin(), lala.end()); …
Run Code Online (Sandbox Code Playgroud)

c++ stl vector unique

2
推荐指数
1
解决办法
4745
查看次数

要返回的值表示无效值

假设您有一个返回枚举的函数:

public enum ServerStatus
{
    Down,
    Up
}

private ServerStatus GetServerStatus(int time)
{
    if (time >= 0 && time < 12)
    {
        return ServerStatus.Down;
    }
    else if (time >= 12 && time <= 23)
    {
        return ServerStatus.Up;
    }
    else
    {
        return ?? // Server status is neither Up nor Down
    } 
}
Run Code Online (Sandbox Code Playgroud)

我是不是该:

  1. 将"Neither"添加到ServerStatus
  2. 使GetServerStatus返回ServerStatus?并返回null
  3. 返回另一个bool,指示值是否有意义

c#

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

为什么列表中的结构状态不能改变?

我知道这听起来很愚蠢.但我必须在这里做错事.

说,

struct lala
{
    private bool state1;

    public lala(bool state1)
    {
        this.state1 = state1;
    }

    public void SetState1ToTrue()
    {
        this.state1 = true;
    }

    public bool GetState1()
    {
        return this.state1;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后某个地方......

List<lala> lalas = new List<lala>();

lalas.Add(new lala(false));
lalas.Add(new lala(false));

lalas[0].SetState1ToTrue();

// Why is it False???
Console.WriteLine(lalas[0].GetState1());
Run Code Online (Sandbox Code Playgroud)

是否有任何变通方法,除了将其更改为:

List<lala> lalas = new List<lala>();

lalas.Add(new lala(false));
lalas.Add(new lala(false));

lala newLala = lalas[0];
newLala.SetState1ToTrue();
lalas[0] = newLala;

// It's True, finally.
Console.WriteLine(lalas[0].GetState1());
Run Code Online (Sandbox Code Playgroud)

看起来很糟糕,不优雅,浪费了2行代码.如果说1行代码中有任何Linq-ish或函数式编程方法,那将是非常棒的.

c#

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