C# 是否可以将以下类合并为一个泛型类?
我有以下课程 LetterScore.csC# 是否可以将以下类合并为一个泛型类?,c#,linq,generics,C#,Linq,Generics,我有以下课程 LetterScore.cs public class LetterScore { public char Letter; public int Score; public LetterScore(char c = ' ', int score = 0) { Letter = c; Score = score; } public override string ToString() => $"LETT
public class LetterScore {
public char Letter;
public int Score;
public LetterScore(char c = ' ', int score = 0) {
Letter = c;
Score = score;
}
public override string ToString() => $"LETTER:{Letter}, SCORE:{Score}";
}
public class LetterPoint {
public char Letter;
public Point Position;
public LetterPoint(char c = ' ', int row = 0, int col = 0) {
Letter = c;
Position = new Point(row, col);
}
public string PositionToString => $"(X:{Position.X}Y:{Position.Y})";
public override string ToString() => $"(LETTER:{Letter}, POSITION:{PositionToString})";
}
LetterPoint.cs
public class LetterScore {
public char Letter;
public int Score;
public LetterScore(char c = ' ', int score = 0) {
Letter = c;
Score = score;
}
public override string ToString() => $"LETTER:{Letter}, SCORE:{Score}";
}
public class LetterPoint {
public char Letter;
public Point Position;
public LetterPoint(char c = ' ', int row = 0, int col = 0) {
Letter = c;
Position = new Point(row, col);
}
public string PositionToString => $"(X:{Position.X}Y:{Position.Y})";
public override string ToString() => $"(LETTER:{Letter}, POSITION:{PositionToString})";
}
我可以用LINQ
或泛型变量(例如T)将这两个类组合成一个类吗
我希望这样做,因为接下来可能会有更多的课程
需要对这些类的格式进行更改的项目
(例如,每个类都有一个字母和一个值,对应于特定的
(情况)
是的,您可以使用泛型执行此操作:
public class Letter<T>
{
public char Letter {get;set;}
public T Item {get;set;} /*or make this protected and expose it in your derived class */
}
public class LetterPoint : Letter<Point>
{
public LetterPoint(char c = ' ', int row = 0, int col = 0)
{
Letter = c;
Item = new Point(row, col);
}
public string PositionToString => $"(X:{Item.X}Y:{Item.Y})";
public override string ToString() => $"(LETTER:{Letter}, POSITION:{PositionToString})";
}
public class LetterScore : Letter<int>
{
public LetterScore(char c = ' ', int score = 0)
{
Letter = c;
Item = score;
}
public override string ToString() => $"LETTER:{Letter}, SCORE:{Item}";
}
公开课信函
{
公共字符字母{get;set;}
公共T项{get;set;}/*或使其受保护并在派生类中公开*/
}
公共类信点:信
{
公共字母点(字符c='',整数行=0,整数列=0)
{
字母=c;
项目=新点(行、列);
}
公共字符串PositionToString=>$“(X:{Item.X}Y:{Item.Y})”;
公共重写字符串ToString()=>$“(字母:{LETTER},位置:{PositionToString})”;
}
公开课成绩:字母
{
公开信分数(字符c='',整数分数=0)
{
字母=c;
项目=得分;
}
公共重写字符串ToString()=>$“字母:{LETTER},分数:{Item}”;
}
这没有编译。@Enigmativity现在应该编译。@TheAuzzieJesus-你应该让Robert自己修改答案。@TheAuzzieJesus-或者你可以将编译代码作为自己的答案发布,但仍然将Robert的答案标记为正确答案。@Enigmativity我下次一定会这么做。