小编jam*_*rom的帖子

施放然后检查或检查然后施放?

可能重复:
使用CLR中的'as'关键字进行转换

哪种方法被认为是最佳做法?

先投?

public string Describe(ICola cola)
{
    var coke = cola as CocaCola;
    if (coke != null)
    {
        string result;
        // some unique coca-cola only code here.
        return result;
    }
    var pepsi = cola as Pepsi;
    if (pepsi != null)
    {
        string result;
        // some unique pepsi only code here.
        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

或者我应该先检查,然后再投?

public string Describe(ICola cola)
{
    if (cola is CocaCola)
    {
        var coke = (CocaCola) cola;
        string result;
        // some unique coca-cola only code …
Run Code Online (Sandbox Code Playgroud)

c# casting

16
推荐指数
2
解决办法
5355
查看次数

检查对象类型是否继承抽象类型

说我有一个对象,someDrink.这可能是类型CocaCola或者Pepsi这两者继承抽象Cola(它继承Drink)或任何一种饮料对这一问题.我有一个方法返回一个最喜欢的饮料字符串.

public string PreferredDrink(Drink someDrink)
{
    var orderOfPreference = new List<Type> {
        typeof (Cola),
        typeof (PurpleDrank),
        typeof (LemonLimeBitters)
        ...
    }

    foreach (drinkType in orderOfPreference) {
        if (someDrink.GetType() == drinkType) {
            return someDrink.ToString()
        }
    }

    throw new Exception("Water will be fine thank you");
}
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,因为类型someCola永远不能等于抽象类型.理想情况下,我想做的事情如下:

if (someCola is drinkType) ...
Run Code Online (Sandbox Code Playgroud)

is关键字只允许后面的类名.

有没有其他方法来检查是否someDrink继承了给定的类型?

如果你能提出一个更好的方法,重构并不是完全不可能的.

c# types

14
推荐指数
1
解决办法
5523
查看次数

C#中的拍手声音检测

我希望能够发现鼓掌声.对于任何形式的声音识别都是新手,有什么简单的方法可以做到这一点吗?如果没有,C#声音识别/检测的任何好资源?

我的目标是使用一些基于拍手的基本控件来自动化客户端媒体中心.

c# audio sound-recognition

10
推荐指数
1
解决办法
1万
查看次数

如何检查动态是否为空.

我使用Newtonsoft的Json.NET来反序列化JSON字符串:

var output = JsonConvert.DeserializeObject<dynamic>("{ 'foo': 'bar' }");
Run Code Online (Sandbox Code Playgroud)

我该怎么检查output是空的?一个示例测试用例:

var output = JsonConvert.DeserializeObject<dynamic>("{ }");
Assert.IsNull(output); // fails
Run Code Online (Sandbox Code Playgroud)

.net c# json dynamic json.net

10
推荐指数
1
解决办法
1万
查看次数

录制时振动 iPhone

我正在尝试让我的 iPhone 在录音时振动。

我试过这个:

UInt32 category = kAudioSessionCategory_PlayAndRecord; 
status |= AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(category), &category);
UInt32 allowMixing = true;
status |= AudioSessionSetProperty (
      kAudioSessionProperty_OverrideCategoryMixWithOthers,  // 1
      sizeof (allowMixing),                                 // 2
      &allowMixing                                          // 3
       );
status |= AudioSessionSetProperty(
      kAudioSessionProperty_OtherMixableAudioShouldDuck, // 1
      sizeof (allowMixing),        // 2
      &allowMixing          // 3
       );
Run Code Online (Sandbox Code Playgroud)

正如这里所建议的。然后稍后通过调用振动设备

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
Run Code Online (Sandbox Code Playgroud)

但它不起作用。但它不会振动。它记录良好,如果我在停止记录之前调用振动时刻,它会在停止后振动。

显然这是一个错误,有人知道解决方法吗?

iphone audio cocoa-touch objective-c

5
推荐指数
1
解决办法
2239
查看次数

WPF简单TextBox绑定 - 从未触及依赖属性

我有一个TextBox,我试图将它绑定到一个DependencyProperty.该物业永远不会在装载或我输入时触及TextBox.我错过了什么?

XAML

<UserControl:Class="TestBinding.UsernameBox"
        // removed xmlns stuff here for clarity>
    <Grid>
        <TextBox Height="23" Name="usernameTextBox" Text="{Binding Path=Username, ElementName=myWindow, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
    </Grid>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

C#

public partial class UsernameBox : UserControl
{
    public UsernameBox()
    {
        InitializeComponent();
    }

    public string Username
    {
        get
        {
            // Control never reaches here
            return (string)GetValue(UsernameProperty);
        }
        set
        {
            // Control never reaches here
            SetValue(UsernameProperty, value);
        }
    }

    public static readonly DependencyProperty UsernameProperty
        = DependencyProperty.Register("Username", typeof(string), typeof(MainWindow));
}
Run Code Online (Sandbox Code Playgroud)

编辑:我需要实现一个DependencyProperty因为我正在创建自己的控件.

wpf binding textbox dependency-properties

2
推荐指数
1
解决办法
9512
查看次数