今天我正在开发一个TextToSpeech应用程序,我遇到了一种情况,我需要检查用户选择的语音是否安装在计算机上.
为此,我可以使用foreach:
bool foundVoice = false;
foreach (var v in installedVoices)
{
if (v.VoiceInfo.Name.Contains(selectedVoice) && v.VoiceInfo.Culture.ToString() == selectedCulture)
{
foundVoice = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
或lamda表达式:
var foundVoice = installedVoices.FirstOrDefault(v => v.VoiceInfo.Name.Contains(selectedVoice) && v.VoiceInfo.Culture.ToString() == selectedCulture);
Run Code Online (Sandbox Code Playgroud)
installedVoices是来自SpeechSynthesizer的ReadOnlyCollection <InstalledVoice>.
毫无疑问,lambda表达式看起来比foreach更干净,但哪一种更好用?
根据我的测试,foreach似乎比lambda表达式略快.
此外,如果需要对InstalledVoice立即采取行动,将来可以扩展foreach和lambda.
我已经按照他们的快速入门教程使用 React 设置了 Auth0。
基本上,我的 React 应用程序围绕着它们的 Context Provider,我可以访问useAuth0我的任何组件中的钩子。
这是我向 API 发出请求的方式:
const TestComponent = () => {
const { getTokenSilently } = useAuth0();
const getObjectsFromAPI = async () => {
const token = await getTokenSilently();
const axiosConfig = {
headers: {
Authorization: "Bearer " + token
}
};
const response = await axios.get(
"/api/objects/",
axiosConfig
);
// ... do something with the response
};
return ... removed code for brevity
};
Run Code Online (Sandbox Code Playgroud)
有没有办法提出请求而不必在每个请求上写token和axiosConfig?
我知道我可以使用配置初始化一个新的 …
创建本地数据库文件然后将应用程序连接到它的正确方法是什么?即使您更改项目文件夹的位置,我希望它能够工作.
知道我做的是:项目 - >添加新项目 - >基于服务的数据库,我创建一个,然后我去数据 - >添加新数据源,我添加创建的数据库,我得到连接字符串.
好的,一切都很好,我可以按照我的意愿连接到它但是当我关闭应用程序时(不总是),我的所有数据都会从数据库中删除.
例如,这段代码:
SqlConnection c = new SqlConnection(@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB.mdf;Integrated Security=True;User Instance=True");
c.Open();
SqlCommand cmd;
cmd = new SqlCommand("CREATE TABLE Persons (id int primary key, nume char(20), age int)");
cmd.ExecuteNonQuery();
cmd = new SqlCommand("INSERT INTO Persons VALUES (@id, @name, @age)", c);
cmd.Parameters.AddWithValue("@id", 1);
cmd.Parameters.AddWithValue("@name", "Catalin");
cmd.Parameters.AddWithValue("@age", 20);
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
我第一次运行它来创建表并向其添加一个项目,然后,如果我第二次运行它而没有使用sqlcommand创建表人员,它告诉我没有Persons对象,但是如果我运行第二次使用相同代码的项目,它告诉我已经有一个Persons对象...
我正在使用Visual C#Express Edition 2010.