Defining \Cref so that it does different things in different contexts (for instance if it has an empty argument or not, or if it is in math or text mode) is definitely not recommendable, as it is confusing.
You can define a "shortcut" producing command:
\makeatletter
\newcommand{\scut}[1]{\@nameuse{myscut@#1}}
\newcommand{\defineshortcut}[2]{\global\@namedef{myscut@#1}{#2}}
\makeatother
Then you can set in your preamble
\defineshortcut{Cref}{C_{\textnormal{ref}}}
and use \scut{Cref} in your document. You can even say
\defineshortcut{C_ref}{C_{\textnormal{ref}}}
and use \scut{C_ref}, if you prefer.
If \scut is perceived as too long, one can use a shorter sequence; \s is free, while \S prints § (so it could be redefined, though with care, because some document could use the original command).
One can use a "one character shortcut", for instance | or " (if babel is not used); the following definitions allow also for "parameterized" shortcuts with the same syntax as \newcommand.
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\scut}[1]{\@nameuse{myscut@shortcut@#1}}
\newcommand{\defineshortcut}[1]{\expandafter\newcommand\csname myscut@shortcut@#1\endcsname}
\newcommand{\useshortcutsymbol}[1]{%
\global\expandafter\chardef\csname myscut@catcode@#1\endcsname\catcode`#1\relax
\catcode`#1=\active
\begingroup\lccode`~=`#1\relax
\lowercase{\endgroup\def~##1~}{\@nameuse{myscut@shortcut@##1}}}
\newcommand{\undefineshortcutsymbol}[1]{%
\catcode`#1\csname myscut@catcode@\string#1\endcsname}
\makeatother
\defineshortcut{C}[1]{C_\textnormal{#1}}
\defineshortcut{Cref}{C_\textnormal{ref}}
\begin{document}
\useshortcutsymbol{|}
$\scut{C}{ref}\quad\scut{Cref}$
$|C|{ref}\quad|Cref|$
\undefineshortcutsymbol{|}
$|C|$
\end{document}
However I wouldn't use this kind of "too short" shortcuts, which are error prone. The \useshortcut command should receive a non special ASCII character as its argument; high bit set characters are definitely not safe, because they are treated differently in different encodings.
\Crefdoing different things in math mode and in text mode, but this is not recommendable. I see no solution other than renaming the shorthand to, say,\sCref("s" for subscript). – egreg Nov 11 '12 at 16:25\Crefto for example\Cleverefand then use your own\Cref. Or you redefine\Crefin a way that when called\Cref{}it expands toC_{\textrm{ref}}otherwose the original definition is used. – Qrrbrbirlbel Nov 11 '12 at 16:35\scut{Cref}might expand toC_{\textrm{ref}}. Would this make sense? – Joseph Wright♦ Nov 11 '12 at 16:44\\can have several different expansions, but it always means "end a line here", at the user level. – egreg Nov 11 '12 at 16:53\newcommand{myfoo}{...}. Then I know the command is mine, and won't accidentally conflict with something already defined. That's sometimes worth doing even ifmyfoojust wrapsfoo- so you can easily change foo behavior later. – Ethan Bolker Nov 11 '12 at 17:18