我正在使用Dictionary<string, string>作为乐器的配置,对于那些对编程知之甚少的用户来说,能够从Visual Studio中获得自动完成功能会更容易.
在Python中,我可以创建一个Dictionary并使用点运算符访问不同的值.
d = {'name':'Joe', 'mood':'grumpy'}
d.name
d.mood
Run Code Online (Sandbox Code Playgroud)
C#有办法做到这一点吗?
我意识到所有涉及的问题,因为字典只是一个通用集合(如何通用?它只是一个KeyValuePairs列表?有趣的问题).我不打算为此完成它的包装类(我希望它比使用自定义类的显式属性更灵活).
我想在Python上每60秒执行一次函数,但我不希望同时被阻塞.
我该如何异步进行?
import threading
import time
def f():
print("hello world")
threading.Timer(3, f).start()
if __name__ == '__main__':
f()
time.sleep(20)
Run Code Online (Sandbox Code Playgroud)
使用此代码,函数f在20秒time.time内每3秒执行一次.最后它给出了一个错误,我认为这是因为threading.timer还没有被取消.
我该如何取消?
提前致谢!
一位同事刚刚在C#中创建了以下构造(示例代码已经简化).他的目标是缩短其余代码中所有预定义字符串的表示法.
public struct PredefinedStrings
{
public const string VeryLongName = "Very Long Name";
public const string AnotherVeryLongName = "Another Very Long Name";
public const string TheLastVeryLongName = "The Last Very Long Name";
}
public static void MethodThatUsesTheNames()
{
Console.WriteLine(PredefinedStrings.VeryLongName);
Console.WriteLine(PredefinedStrings.AnotherVeryLongName);
Console.WriteLine(PredefinedStrings.TheLastVeryLongName);
}
Run Code Online (Sandbox Code Playgroud)
虽然它似乎对他来说很好,但我不禁想知道他是否应该使用静态类而不是结构,或者是否有更优雅的方法来实现这一点.
这样做的首选方法是什么?还请解释原因.
我完全不知道如何检索当前选中或打开的电子邮件的详细信息.事实上,我找不到有关如何访问电子邮件的任何细节.看来你可以遍历整个文件夹结构并获取所有电子邮件,但这对我没有帮助.
我不认为我可以得到一些指示?
是的,我和下一个开发人员一样讨厌VBA,但不幸的是,我的工作中有0.1%涉及与Outlook的集成.
干杯.
我在Clojure中找到使用命名空间的好建议和常用做法时遇到了麻烦.我意识到命名空间与Java包不同,所以我试图梳理Clojure中的约定,这似乎很难确定.
我想我非常清楚如何将函数分成clj文件,甚至大致如何将这些文件组织到目录中.但除此之外,我无法为我的开发环境找到机制.一些相互关联的问题:
谢谢...
iBatis 框架在版本 2 和 3 之间进行了重大调整,甚至配置文件(现在通常称为 MapperConfig.xml)也有所不同。
话虽如此,网上有很多关于如何使用 iBatis 创建 JDBC 连接池的示例,但我找不到关于如何使用 JNDI 创建的示例。有一个更新的用户指南:http://svn.apache.org/repos/asf/ibatis/java/ibatis-3/trunk/doc/en/iBATIS-3-User-Guide.pdf确实参考了第 19 页上的 JNDI 设置,但我仍然无法让它与数据库正确通信。
非常感谢 iBatis 3 中 JDNI(容器管理连接池)的工作示例!!
Class Model<T>{
private T t;
.....
private void someMethod(){
//now t is null
Class c = t.getClass();
}
.....
}
Run Code Online (Sandbox Code Playgroud)
当然它会引发NPE.
Class c = t.getClass();
Run Code Online (Sandbox Code Playgroud)
如果我的实例为null,我应该使用什么语法来获取T的类?可能吗?
C++标准禁止在命名空间中声明类型或定义任何内容std,但它允许您为用户定义的类型专门化标准STL模板.
通常,当我想专注std::swap于我自己的自定义模板类型时,我只是这样做:
namespace std
{
template <class T>
void swap(MyType<T>& t1, MyType<T>& t2)
{
t1.swap(t2);
}
}
Run Code Online (Sandbox Code Playgroud)
......这很好.但我不完全确定我的惯常做法是否符合标准.我这样做了吗?
我在使用CultureInfo.CurrentCulture时形成我的字符串时使用string.format
引用此博客
这只是暗示如果您经常使用CurrentCulture,可能值得将其读入私有变量而不是大量调用CultureInfo.CurrentCulture,否则您将不必要地耗尽时钟周期.
所以这个作者
var culture = CultureInfo.CurrentCulture
string.Format(culture,"{0} some format string","some args");
string.Format(culture,"{0} some format string","some other args");
Run Code Online (Sandbox Code Playgroud)
比...更好
string.Format(CultureInfo.CurrentCulture,"{0} some format string","some args");
string.Format(CultureInfo.CurrentCulture,"{0} some format string","some other args");
Run Code Online (Sandbox Code Playgroud)
根据MSDN,CultureInfo.CurrentCulture是一个属性
多次访问属性时是否存在性能损失?
我还做了一些经验分析,我的测试表明,使用局部变量比直接使用属性更昂贵.
Stopwatch watch = new Stopwatch();
int count = 100000000;
watch.Start();
for(int i=0;i<count;i++)
{
string.Format(CultureInfo.CurrentCulture, "{0} is my name", "ram");
}
watch.Stop();
//EDIT:Reset watch
watch.Reset();
Console.WriteLine(watch.Elapsed);
Console.WriteLine(watch.ElapsedMilliseconds);
Console.WriteLine(watch.ElapsedTicks);
Console.WriteLine("--------------------");
var culture = CultureInfo.CurrentCulture;
watch.Start();
for (int i=0; i < count; i++)
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用DataAnnotations在asp.NET MVC 2 RC2中为我的模型添加验证,使用TryUpdateModel
var user = UserManager.Find(id);
this.TryUpdateModel<IProvisioningObject>(user, form.ToValueProvider());
Run Code Online (Sandbox Code Playgroud)
这会更新模型,但永远不会调用验证.我也尝试使用TryUpdateModel(这是用户的直接类型),不使用表单值提供程序,直接使用ProvisioningObject(具有验证元数据),无济于事.
谷歌搜索示例仅为我提供了通过参数绑定来使用DataAnnotations的方法
public ActionResult Update(User user)
Run Code Online (Sandbox Code Playgroud)
我不喜欢更新方案.
任何提示和/或解决方案?
编辑 我的对象是来自WCF服务的自动生成的对象.
我做了部分能够添加DataAnnotations.我调用TryUpdateModel三次,因为它显然不支持继承,我认为这也是我对DataAnnotations的问题.我为ProvisioningObject指定了验证属性,绑定不会查找类似的继承内容.
[MetadataType(typeof(ProvisioningObjectMetadata))]
public partial class ProvisioningObject : IProvisioningObject
{
public string DisplayNameInvariant { get { return string.IsNullOrEmpty(this.DisplayName) ? this.Name : this.DisplayName; } }
}
[MetadataType(typeof(UserMetadata))]
public partial class User : IUser
{
}
public class ProvisioningObjectMetadata
{
[DisplayName("Country")]
public string CountryIsoCode { get; set; }
[Required(ErrorMessageResourceType = typeof(Properties.Validation), ErrorMessageResourceName = "DisplayNameIsRequired")]
[TempValidator]
public string DisplayName { get; set; }
} …Run Code Online (Sandbox Code Playgroud) c# ×4
asp.net-mvc ×1
asynchronous ×1
c++ ×1
call ×1
clojure ×1
conventions ×1
function ×1
generics ×1
ibatis ×1
jakarta-ee ×1
java ×1
jdbc ×1
jndi ×1
namespaces ×1
optimization ×1
outlook ×1
performance ×1
properties ×1
python ×1
standards ×1
stl ×1
string ×1
struct ×1
swap ×1
syntax ×1
updatemodel ×1
vba ×1