function foo(a) {
if (/*some condition*/) {
// perform task 1
// perform task 3
}
else {
// perform task 2
// perform task 3
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个功能,其结构类似于上面的.我想将任务3抽象为一个函数,bar()但是我希望将此函数的访问权限限制在范围内foo(a).
为了达到我想要的目的,改为以下是否正确?
function foo(a) {
function bar() {
// perform task 3
}
if (/*some condition*/) {
// perform task 1
bar();
}
else {
// perform task 2
bar();
}
}
Run Code Online (Sandbox Code Playgroud)
如果以上是正确的,bar()每次foo(a)调用时都会重新定义吗?(担心这里浪费cpu资源)
我有一个使用new Regex(string pattern)构造函数创建的Regex对象,之后是否有办法查看正则表达式对象的创建模式?
我似乎无法访问正则表达式或RegexOptions对象中的"模式"字符串成员.
上下文:我要问的原因是我在初始化时(模式存储在配置文件中)早期创建了一些正则表达式对象,然后将它们传递给另一个经常使用的类.但是,我还需要在运行时将模式字符串与存储在SQL数据库中的字符串进行比较.
除了正则表达式对象之外,我宁愿不必传递带有模式的字符串.我也觉得在启动时创建一次对象并不是一个坏主意,因为正则表达式将被重复使用数百次?
随意提供替代建议.
我有一个struct字典,其中一个成员是一个包含适用于每个字典项的不同元素的列表.
我想针对每个项目加入这些元素,以便过滤它们和/或按元素对它们进行分组.
在SQL中我熟悉加入表/查询以获得所需的多行,但我是C#/ Linq的新手.由于"列"可以是已经与正确的字典项关联的对象/列表,我想知道如何使用它们来执行连接?
以下是结构示例:
name elements
item1 list: elementA
item2 list: elementA, elementB
Run Code Online (Sandbox Code Playgroud)
我想要一个提供此输出的查询(count = 3)
name elements
item1 elementA
item2 elementA
item2 elementB
Run Code Online (Sandbox Code Playgroud)
最终,将它们分组为:
element count
ElementA 2
ElementB 1
Run Code Online (Sandbox Code Playgroud)
这是我的代码开始计算字典项目.
public struct MyStruct
{
public string name;
public List<string> elements;
}
private void button1_Click(object sender, EventArgs e)
{
MyStruct myStruct = new MyStruct();
Dictionary<String, MyStruct> dict = new Dictionary<string, MyStruct>();
// Populate 2 items
myStruct.name = "item1";
myStruct.elements = new List<string>();
myStruct.elements.Add("elementA");
dict.Add(myStruct.name, myStruct);
myStruct.name = "item2"; …Run Code Online (Sandbox Code Playgroud)