标签: conditional-operator

.NET开发人员对条件运算符的看法是什么?

我真的很喜欢C#中的条件运算符.它使我的生活更容易编写如下的逻辑:

public  string FormattedFileName
    {
        get
        {
            return string.Format("{0}_{1}_{2}_{3}.xls", 
            DateTime.Now.Month.ToString().Length == 1 
             ? "0" + DateTime.Now.Month.ToString()
             : DateTime.Now.Month.ToString(), 
            DateTime.Now.Day.ToString().Length == 1 
             ? "0" + DateTime.Now.Day.ToString()
             : DateTime.Now.Day.ToString(), 
            DateTime.Now.Year.ToString(), 
            "DownLoaded_From_Clients");
        }
    }
Run Code Online (Sandbox Code Playgroud)

当然,这意味着我失去了代码的可读性.无论如何,我只是好奇其他开发人员对这种编写代码的方法的看法.谢谢.我同样赞赏消极和积极的评论.

.net c# ternary-operator conditional-operator

1
推荐指数
7
解决办法
1636
查看次数

优化C#中的条件运算符分支

返回this.AllowChooseAny.Value?radioSpecific.Checked?UserManager.CurrentUser.IsClient?txtSubject.Text:subjectDropDownList.SelectedItem.Text:String.Empty:UserManager.CurrentUser.IsClient?txtSubject.Text:subjectDropDownList.SelectedItem.Text;

或者以不太复杂的形式:

return any ?
    specified ?
       isClient ? textbox : dropdown :
       empty :
    isClient ? textbox : dropdown;
Run Code Online (Sandbox Code Playgroud)

或以示意图形式:

                     |
                    any
              /            \
      specified             isClient
      /        \           /        \
  isClient    empty     textbox  dropdown
  /       \
textbox  dropdown
Run Code Online (Sandbox Code Playgroud)

显然我在两个不同的级别上有一个重复的块.是否可以优化此代码以将它们分成一个?或类似的东西..

.net c# boolean-logic conditional-operator

1
推荐指数
3
解决办法
430
查看次数

如何使用 ?字符串的关键字

我有一个简单的条件,并希望用?:关键字实现它,但编译器不要让我.这是确切的样本

// in asp page decleration
<ajaxtoolkit:FilteredTextBoxExtender id="ftbeNumeric" runat="server" TargetControlID="textbox1" FilterType="Numbers" />
<asp:TextBox ID="textbox1" runat="server" />

// in code behind 
decimal x = textbox1.Text != string.IsNullOrEmpty ? Convert.ToDecimal(textbox1.Text) : 0;
Run Code Online (Sandbox Code Playgroud)

我也试试这个

// in code behind 
decimal x = Convert.ToDecimal(textbox1.Text) != 0 ? Convert.ToDecimal(textbox1.Text) : 0;
Run Code Online (Sandbox Code Playgroud)

这些样品的bith面临错误.

如何用?:关键字定义这个?并注意textbox.text`可能为null.

c# asp.net conditional conditional-operator

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

什么更快:if语句或条件运算符?(C#)

简单的问题(我认为):这些代码中的哪些代码在C#中执行得更快?

newSpeed = newSpeed > maxSpeed ? maxSpeed : newSpeed;
Run Code Online (Sandbox Code Playgroud)

要么

if (newSpeed > maxSpeed)
{
    newSpeed = maxSpeed;
}
Run Code Online (Sandbox Code Playgroud)

c# if-statement conditional-operator

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

C++具有不同类型作为参数的条件运算符

我正在尝试在int和*节点上使用条件运算符(?)(节点是自定义结构).这是我的代码,以及由此产生的错误.

节点:

struct node {
  int num;
  node *next;
};
Run Code Online (Sandbox Code Playgroud)

条件实施:

void PrintNodes(node *head_p) {
  int done = 0;
  while (!done) {
    PrintNodeData(head_p);
    // if (head_p->next==NULL) {
    //   done++;
    // } else {
    //   head_p++;
    // }
    ((head_p->next==NULL) ? done : head_p)++;
  }
}
Run Code Online (Sandbox Code Playgroud)

if...then...else在条件语句上面的注释中有相同的声明,我只想将其修剪为一行.

编辑

错误:

test.cc: In function ‘void PrintNodes(node*)’:
test.cc:28:36: error: operands to ?: have different types ‘int’ and ‘node*’
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)

c++ pointers conditional-operator

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

为什么我不能在条件运算符中返回具有共同祖先的兄弟类型?

为什么我不能在条件运算符中返回具有共同祖先的兄弟类型?

为什么C#不支持这个?

class Polygon
{
    public int CountSides { get; set; }
}

class Rectangle : Polygon { }

class Circle : Polygon { }

class Program
{
    static void Main(string[] args)
    {
        Polygon p = true ? new Circle() : new Rectangle();
    }
}
Run Code Online (Sandbox Code Playgroud)

c# oop inheritance type-conversion conditional-operator

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

Java是运行每个条件运算符还是在If语句中短路?

我在某处看到,一旦If语句达到True布尔值,Java就应该"短路".但是,我目前遇到以下代码中的空指针异常(我已经为此问题简化了):

currentFragment.setTag(HOME);
if( !currentFragment.getTag().equals(PROFILE) | 
        ( currentFragment.getArguments() != null &  
        currentFragment.getArguments().getInt("authorId") != userId) ) { }
Run Code Online (Sandbox Code Playgroud)

Android开发人员会知道setTag()不是一个真正的方法,但在我的实际代码中,我通过错误记录确保了currentFragment.getTag()!= PROFILE.但是,当此代码运行时,它会导致零点异常

currentFragment.getArguments().getInt("authorId") != userId
Run Code Online (Sandbox Code Playgroud)

它应该在|之前的第一个条件下短路 (或)运营商.如果失败了,下一行应该确保getArguments()!= null,那么为什么它会一直到最终条件呢?可以解释这里发生的事情的内部运作.谢谢.

java if-statement conditional-operator

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

类型不匹配:使用条件运算符时无法从Object转换为K.

我有以下代码,

class Foo<K> {

    public <T> T createK() {
        return null;
    }

    public void foo() throws ClassNotFoundException {
        K k = (1==1)?null:createK();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,它没有编译.它使用条件运算符导致以下编译错误(Oracle Java 7):

类型不匹配:无法从Object转换为K.

当我重写foo()方法如下,

public void foo() throws ClassNotFoundException {
    K k = null;
    if (1==1)
        k = null;
    else
        k = createK();
}
Run Code Online (Sandbox Code Playgroud)

然后编译好.这是怎么造成的,我该如何解决?

java generics conditional-operator

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

内联中的多个语句if

是否可以在AngularJS表达式的内联if语句中包含多个语句?例如,以下失败:

ng-change="someCondition() ? doA(); doB() : doC()"
ng-change="someCondition() ? doA(), doB() : doC()"
Run Code Online (Sandbox Code Playgroud)

这可以按如下方式完成:

ng-change="someCondition() ? doA() : doC(); someCondition() ? doB() : ''"
Run Code Online (Sandbox Code Playgroud)

但这很丑陋,两次调用someCondition(),并且在控制器中发出尖叫声.有没有办法让第一个例子起作用?

conditional-operator angularjs

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

减少表达式中使用的条件运算符数(4)(允许的最大值为3)

如何减少运营商的复杂性?我有条件问题.

Object someObject = getSomeObject();
boolean isNotInstanceOfA = !(someObject instanceof A);
boolean isNotInstanceOfB = !(someObject instanceof B);
boolean isNotInstanceOfC = !(someObject instanceof C);
boolean isNotInstanceOfABC = isNotInstanceOfA && isNotInstanceOfB && isNotInstanceOfC;
if (isNotInstanceOfABC && (container.getChildren(itemId) == null || container.getChildren(itemId).isEmpty())) {
    return "something";
 }
Run Code Online (Sandbox Code Playgroud)

java conditional-operator

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