我正在创建一个函数,我需要传递一个对象,以便它可以被函数修改.有什么区别:
public void myFunction(ref MyClass someClass)
Run Code Online (Sandbox Code Playgroud)
和
public void myFunction(out MyClass someClass)
Run Code Online (Sandbox Code Playgroud)
我应该使用哪个以及为什么?
假设我有LINQ查询,例如:
var authors = from x in authorsList
where x.firstname == "Bob"
select x;
Run Code Online (Sandbox Code Playgroud)
鉴于它authorsList是类型List<Author>,我如何删除查询返回的Author元素?authorsListauthors
或者换句话说,如何删除所有名字等于Bob的名字authorsList?
注意:这是用于问题目的的简化示例.
我是最近的AI毕业生(大约2年),从事适度的操作.它已经落到我身上(主要是因为我是该部门的第一个"采用者")来创建一个基本的(阅读有用的?)C#编码标准文档.
我想我应该解释一下,我可能是最初级的软件工程师,但我期待着这项任务,希望我实际上可以生产出一半可用的东西.我已经对互联网进行了大量的搜索,并阅读了有关编码标准文档应该/不应该包含的内容的文章.这似乎是一个很好的地方,可以提出一些建议.
我意识到,我可能会打开一扇门,通往一个关于"最好的做事方式"的分歧.我既理解又尊重不可否认的事实,即每个程序员都有一个解决每个任务的首选方法,因此我不打算写任何如此严厉的禁止,以至于扼杀个人风格,而是试图获得一般方法并达成一致标准(例如命名约定),以帮助使个人代码更具可读性.
所以这里......任何建议?有没有?
我有以下代码:
// Obtain the string names of all the elements within myEnum
String[] names = Enum.GetNames( typeof( myEnum ) );
// Obtain the values of all the elements within myEnum
Array values = Enum.GetValues( typeof( myEnum ) );
// Print the names and values to file
for ( int i = 0; i < names.Length; i++ )
{
print( names[i], values[i] );
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法索引值.有更简单的方法吗?
或者我完全错过了什么!
我怎么能转换List<MyObject>到IEnumerable<MyObject>,然后再回来?
我想这样做是为了在List上运行一系列LINQ语句,例如 Sort()
是否有一个很好的简单方法来延迟函数调用,同时让线程继续执行?
例如
public void foo()
{
// Do stuff!
// Delayed call to bar() after x number of ms
// Do more Stuff
}
public void bar()
{
// Only execute once foo has finished
}
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过使用计时器和事件处理程序来实现,但我想知道是否有一种标准的c#方式来实现这一目标?
如果有人好奇,那么需要的原因是foo()和bar()在不同的(单例)类中,我需要在特殊情况下相互调用.问题是这是在初始化时完成的,所以foo需要调用bar,它需要一个正在创建的foo类的实例...因此延迟调用bar()以确保foo完全实例化.读回来几乎是糟糕的设计!
编辑
我会在建议下接受关于糟糕设计的观点!我一直认为我可能能够改进系统,但是,这种令人讨厌的情况只会在抛出异常时发生,而在其他所有其他时候两个单身人士共存非常好.我认为我不会讨厌令人讨厌的异步模式,而是我要重构其中一个类的初始化.
可能重复:
在C#中将int转换为枚举
如果我有以下代码:
enum foo : int
{
option1 = 1,
option2,
...
}
private foo convertIntToFoo(int value)
{
// Convert int to respective Foo value or throw exception
}
Run Code Online (Sandbox Code Playgroud)
转换代码会是什么样的?