我有一个双链表(队列)我自己做的.
我想知道,要清除链表,是否足以简单地删除头部和尾部参考?
例如
public void Clear()
{
Head = null;
Tail = null;
}
Run Code Online (Sandbox Code Playgroud)
我正在拍摄多米诺骨牌效应,但我很难测试它.它将使整个对象至少显示为空.所有数据请求(例如peek,dequeue等)都返回null.您还可以轻松地将一些新对象排入队列.纯粹的功能似乎是有效的.
但我真的很想知道我是否采取了正确的方式.
我有这两个班:
class EmpIDPayTypeSettings
{
public Guid OID { get; set; }
public Guid PayTypeOID { get; set; }
public int GroupTypeID { get; set; }
public Guid EmpOID { get; set; }
public int OrderBy { get; set; }
}
class DocRegHour
{
public Guid OID { get; set; }
public Guid DocumentOID { get; set; }
public Guid medarbejderOID { get; set; }
public Guid PaytypeOID { get; set; }
public string PayTypeInfo { get; set; }
public double …Run Code Online (Sandbox Code Playgroud) 据我所知,你可以这样做:
如果您的列表是双重链接.
但是你如何用一个链表做到这一点?我已经尝试了很多东西,但没有用:(我只是简单地删除一个特定的索引,或者它什么都不做
我有一个存储丢失整数的列表.我不喜欢默认的List.Sort()工作,因为我希望列表按实际int的大小排序.到目前为止我有这个:
哦,并且整数存储在字符串中,例如"1234".这是我无法改变的.
public class IntComparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (x == null)
{
if (y == null)
{
// If x is null and y is null, they're
// equal.
return 0;
}
else
{
// If x is null and y is not null, y
// is greater.
return -1;
}
}
else
{
// If x is not null...
//
if (y == null)
// ...and y is null, x is …Run Code Online (Sandbox Code Playgroud) 考虑一下:
必要的:
//The alphabet from a-z
List<char> letterRange = Enumerable.Range('a', 'z' - 'a' + 1)
.Select(i => (Char)i).ToList(); //97 - 122 + 1 = 26 letters/iterations
Run Code Online (Sandbox Code Playgroud)
标准foreach:
foreach (var range in letterRange)
{
Console.Write(range + ",");
}
Console.Write("\n");
Run Code Online (Sandbox Code Playgroud)
内置的foreach:
letterRange.ForEach(range => Console.Write(range + ",")); //delegate(char range) works as well
Console.Write("\n");
Run Code Online (Sandbox Code Playgroud)
我已经尝试过将它们相互对准,并且内置的foreach速度提高了2倍,这似乎很多.
我用Google搜索过,但我似乎无法找到任何答案.
另外,关于:在.NET中,哪个循环运行得更快,'for'或'foreach'?
for (int i = 0; i < letterRange.Count; i++)
{
Console.Write(letterRange[i] + ",");
}
Console.Write("\n");
Run Code Online (Sandbox Code Playgroud)
据我所知,不执行比标准foreach更快.
我只做过没有关系的数据库,但现在我需要做一些更严肃和正确的事情。
这是我的 SQL (SQLite) 架构:
CREATE TABLE Post (
Postnr INTEGER NOT NULL PRIMARY KEY,
Bynavn VARCHAR(50) NOT NULL
);
CREATE TABLE Kunde (
CPR INTEGER NOT NULL PRIMARY KEY,
Navn VARCHAR(50) NOT NULL,
Tlf INTEGER NOT NULL,
Adresse VARCHAR(50) NOT NULL,
Postnr INTEGER NOT NULL
CONSTRAINT fk_postnr_post REFERENCES Post(Postnr)
);
CREATE TABLE Varegruppe (
VGnr INTEGER PRIMARY KEY,
Typenavn VARCHAR(50) NOT …Run Code Online (Sandbox Code Playgroud) 让我们说我有一个文本框或任何其他形式的输入,要求提供社会安全号码.我想要注意的是,SSN是一个纯粹的例子,我现在只是想到了.该输入最初将自然地存储为字符串.
string s = Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
让我们说我想要一个验证SSN的方法,它可能会在我的代码中用于各种各样的地方.哎呀,我甚至可能在一个尚未由用户输入确定的变量上调用该方法.
这可以接受吗?
public bool IsValidSSN(Object SSN)
{
int mySSN;
if(Int.Parse(SSN == false)
{
mySSN = Convert.toInt32(SSN);
}
...
}
Run Code Online (Sandbox Code Playgroud)
或者你会坚持要求我提供特定的数据类型,例如
public bool IsValidSSN(int SSN)
{
...
}
Run Code Online (Sandbox Code Playgroud)
因此我需要在输入方法之前将输入转换为正确的数据类型.
顺便说一句:我不是问如何做一个正确的IsValidSSN代码:)我只是想举例说明我的意思:我可以接受Object数据类型作为参数还是应该尽量避免它?
我需要一些使用LINQ来根据文件大小来归档文件列表的帮助。我有一些代码,但是它使用的是file.length而不是FileInfo(file).length。我不知道如何在表达式中实现对象“ FileInfo”。救命?
{
IEnumerable<string> result = "*.ini,*.log,*.txt"
.SelectMany(x => Directory.GetFiles("c:\logs", x, SearchOption.TopDirectoryOnly))
;
result = result
.Where(x => (x.Length) > "500000")
;
}
Run Code Online (Sandbox Code Playgroud) 如果我想创建支持多种语言的ac#应用程序,我应该如何存储它们?
我可能会在应用程序中使用常量作为价值持有者.
如:Console.Write(FILE_NOT_FOUND);
编译时,它将更改为由语言确定的字符串.我可能会坚持使用3种语言(丹麦语,英语,德语),但我认为这并不重要.
为每种语言创建一个类文件似乎是一种浪费,在编译应用程序时都会处理这些文件.这也意味着每次要更改字符串时都必须重新编译并重新分发整个程序.据我所知,硬编码字符串是一件坏事.
也许是一个文本文件?English.txt第1行:FILE_NOT_FOUND =找不到文件.再试一次Line2 Line3等
Danish.txt第1行:FILE_NOT_FOUND = Filen blev ikke fundet.PrøvligenLine2 Line3等
等等.如果用户选择英语,它将读取文本文件并设置不同的常量值.
我能想到的最后一个是将它放在SQL数据库中.
你能给我一些意见吗?:)
另外,我尝试写FILE _ NOT _ FOUND(没有空格,但文本编辑器不会让我
老实说,我不知道他们叫什么.我一直无法在互联网上找到文章.
所以我明白你可以这样做:
public struct Pair<T, U>
{
public readonly T Value1;
public readonly U Value2;
public Pair(T fst, U snd)
{
this.Value1 = fst;
this.Value2 = snd;
}
public override String ToString()
{
return "(" + Value1 + ", " + Value2 + ")";
}
public Pair<U, T> Swap()
{
return new Pair<U, T>(Value2, Value1);
}
}
Run Code Online (Sandbox Code Playgroud)
它可能是一个class而不是一个struct.
但我很困惑,出于什么目的?某种性能提升?据我所知,您可以使用这些东西(抱歉,这是什么名称?)来保存值.但是你不会总是知道它应该拥有什么样的数据吗?例如:如果您需要存储产品,则只需制作产品类.当然,你知道它需要掌握什么样的数据,因为你正在设计代码.
所以是的,我想我的问题是:这个的目的是什么,与普通物体相比有什么优势; 您指定了更多
我想我不清楚.我也想知道:有没有充分的理由去创造像上面那样的东西?例如,一个更具体的对象,例如将产品数据存储在产品对象中,而不是一些可以接收所有内容的通用对象.
新:更多文本:另外,你怎么能处理完全通用的错误编码?当我不知道我必须处理什么样的数据类型时,我担心会进行任何类型的数学操作或实际上任何操作.如果它需要我为所有数据类型编写错误处理,那么我真的看不到这些通用参数的优点.
c# ×9
.net ×2
generics ×2
linked-list ×2
benchmarking ×1
collections ×1
conventions ×1
foreach ×1
foreign-keys ×1
group-by ×1
linq ×1
list ×1
primary-key ×1
silverlight ×1
sorting ×1
sql ×1