c# - 避免在具有内部不同字符的声明中重复
问题描述
有什么方法可以避免重复声明同一类型的多个实例,这些实例之间有一些不同的东西?只声明一次固定语句,然后在其中多次声明内部变量而不使用任何方法
- 使用方法很简单,我试图仅在类声明中实现这一点。
假设我们必须Strings
像这样声明多个:
String A = "You found a" + "Common" + "card";
String B = "You found a" + "Rare" + "card";
String C = "You found a" + "Legendary" + "card";
所以我想要的是只声明一次"You found a"
并且"card"
只用它们的内部变量字符声明 A、B 和 C(当然,有重复的语句并且不使用任何方法)。
我将上面的代码编写为一个更简单的实例,可以帮助我以array
这样的方式实现解决方案:
AudioClip[] audioClips =
{
(AudioClip)Resources.Load("Audios/audio1.mp3", typeof(AudioClip)),
(AudioClip)Resources.Load("Audios/audio2.mp3", typeof(AudioClip)),
(AudioClip)Resources.Load("Audios/audio3.mp3", typeof(AudioClip)),
};
// This is Unity by the way, just a sample
如您所见,我们有一行代码的数组输入,其中只有一个变量字符Strings
。
那么有没有办法有这样的东西:
//Imaginary code:
String A = /* You found a */ "common" /* card */'
String B = /* You found a */ "Rare" /* card */;
String C = /* You found a */ "Legendary" /* card */;
在第二个中:
AudioClip[] audioClips =
{
/* (AudioClip)Resources.Load("Audios/audio */ 1 /* .mp3", typeof(AudioClip)) */,
/* (AudioClip)Resources.Load("Audios/audio */ 2 /* .mp3", typeof(AudioClip)) */,
/* (AudioClip)Resources.Load("Audios/audio */ 1 /* .mp3", typeof(AudioClip)) */,
};
// The commented statements with /*, */ are what need to be there
// without being written multiple times in each.
那么有解决办法吗?我说不使用任何方法,但如果只能通过方法来实现,那么如何在AudioClip array
.
解决方案
您可以将const
带有占位符的字符串用于要替换的值,然后string.Format
在需要时使用它来进行替换,例如:
const string FoundCardMessage = "You found a {0} card";
private static void Main(string[] args)
{
var cardTypes = new List<string> {"Common", "Rare", "Legendary"};
foreach (var cardType in cardTypes)
{
var message = string.Format(FoundCardMessage, cardType);
Console.WriteLine(message);
}
}
输出
推荐阅读
- java - OSGI服务可见性/DS注解组件注入
- python - 使用 Raspberry PI 在 tkinter GUI 上已导入不同的 Board 方法错误
- android - React native cli\build\bin.js 无法解决
- octave - 八度音阶的 lsode 函数
- java - SharedPreferences Java Android Studio
- google-maps - OnMapReadyCallback 未使用 Navhost 传输到嵌套多窗格布局中的父片段
- php - laravel 8 不像 7x 版本那样设置主页
- python-3.x - 尽管 Selenium WebDriver 只有部分页面被解析
- macos - 如何从命令行在 macOS Catalina 上设置“点击以单击”行为?
- jpa - @Query - 返回原始类型或字符串对象?